# 给定两个整数 A 和 B，返回任意字符串 S，要求满足：
#  S 的长度为 A + B，且正好包含 A 个 'a' 字母与 B 个 'b' 字母；
#  子串 'aaa' 没有出现在 S 中；
#  子串 'bbb' 没有出现在 S 中。
#
#  示例 1：
#  输入：A = 1, B = 2
# 输出："abb"
# 解释："abb", "bab" 和 "bba" 都是正确答案。
#
#  示例 2：
#  输入：A = 4, B = 1
# 输出："aabaa"
class Solution:
    def strWithout3a3b(self, a: int, b: int) -> str:
        """
        尽可能多的凑"aa"或者"bb"
        :param a:
        :param b:
        :return:
        """
        res = []
        writeA = False
        while a > 0 or b > 0:
            if len(res) >= 2 and res[-1] == res[-2]:  # 连续写了两个'a'或者两个'b'
                writeA = (res[-1] == 'b')  # 连续写了两个'b',本轮只能写
            else:
                writeA = (a >= b)  # 选择当前所剩最多的待写字母写入字符串末尾
            # 本轮循环该写'a'还是写'b'
            if writeA:
                res.append('a')
                a -= 1
            else:
                res.append('b')
                b -= 1
        return ''.join(res)


if __name__ == "__main__":
    A, B = 4, 1
    print(Solution().strWithout3a3b(A, B))
